const items1 = [
  {
    id: 1,
    items: 'items',
  },
  {
    id: 2,
    items: 'items',
  },
  {
    id: 3,
    items: 'items',
  },
];

const items2 = [
  {
    id: 2,
    items: 'items',
  },
  {
    id: 3,
    items: 'items',
  },
  {
    id: 4,
    items: 'items',
  },
];

// 合并成
arr = [
  {
    id: 1,
    items: 'items',
  },
  {
    id: 2,
    items: 'items',
  },
  {
    id: 3,
    items: 'items',
  },
  {
    id: 4,
    items: 'items',
  },
];


// function merge(items1, items2) {
//   const res = [];
//   const map = new Map();
//   for (let item of items1) {
//     res.push(item);
//     map.set(item.id, true);
//   }
//   for (let item of items2) {
//     if (!map.has(item.id)) {
//       res.push(item);
//     }
//   }
//   return res;
// }

// function merge2(items1, items2) {
//   const res = items1.concat(items2);
//   const map = new Map();
//   return res.filter((item) => {
//     return map.has(typeof item + JSON.stringify(item))
//       ? false
//       : map.set(typeof item + JSON.stringify(item),true);
//   })
// }

function merge3(items1, items2) {
  const arr = items1.concat(items2);
  const map = new Map();
  const res = [];
  for (let item of arr) {
    if (!map.has(item.id)) {
      res.push(item);
      map.set(item.id, true);
    }
  }
  return res;
}

console.log(merge3(items1,items2));